<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let number = 18;
        let obj = {
            name:'张三',
            sex:'男',
        }
        // 通过Object.defineProperty方法给obj对象添加属性
        // 现在通过该方法将obj中age属性的值和number中的值绑定起来，随numeber中的值变化而自动发生变化
        Object.defineProperty(obj, "age",{
            // 设置age属性的值
            // value:number,
            // 设置该属性可以参与循环遍历(默认是不可以)
            // enumerable:true,
            // 设置该属性可以被修改(默认是不可以)
            // writable:true,
            // 设置该属性可以被删除(默认是不可以) 
            // configurable:true,

            // 当读取age属性时，就会自动触发该函数,且返回值就是该属性的值
            get(){
                console.log("有人读取age属性了");
                return number;
            },
            // 当修改age属性，就会自动触发该函数，且函数中的形参就是age属性的值
            set(value){
                console.log("有人修改age属性了");
                console.log(value);
            }
        });
        // Object.keys 可以遍历该对象的所有属性名
        // console.log(Object.keys(obj));;
        console.log(obj);
    </script>
</body>
</html>